//
// Created by feng on 19-3-30.
// PS: Define the rectangle heliostat data structure.
//
#ifndef SOLARENERGY_CHIER_RECTANGLEHELIO_CUH
#define SOLARENERGY_CHIER_RECTANGLEHELIO_CUH
#include "CudaHeliostat.cuh"

namespace solar::cuda
{
    class CudaRectangleHelio : public CudaHeliostat
    {
        public:
            CudaRectangleHelio() = default;

            auto getSubHelioSize() -> int override { return sub_helio_size_; }

            void setSize(float3 size_) override;

            auto CGetDiscreteMicroHelioOriginsAndNormals_(float3*& d_microhelio_centers,
                                                          float3*& d_microhelio_normals, int id)
                -> int override;

            void CGetSubHeliostatVertexes(std::vector<float3>&) override;

            void setSurfaceProperty(const std::vector<float>& surface_property,
                                    int focal_input_method) override
            {
            }
            auto getSurfaceProperty() -> std::vector<float> override;
    };
} // namespace solar::cuda

#endif // SOLARENERGY_CHIER_RECTANGLEHELIO_CUH
